<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- 两个列表的最小索引总和 -->
    <script>
      /*
      首先求出两个数组的交集，最后的结果肯定在这个交集数组中
      定义一个最小值，结果最大为两个数组的长度之和
      遍历交集数组，找到每个子集在两个数组中的索引再求和
      与最小值比较，如果大于最小值，继续遍历
      如果等于最小值，说明答案不止一个，在结果中继续添加
      如果小于最小值，之前的结果清空，重新添加结果
      */
      function findRestaurant(list1, list2) {
        let res = []
        let min = list1.length + list2.length
        let newArr = list1.filter(i => list2.includes(i))
        for (let v of newArr) {
          let sum = list1.indexOf(v) + list2.indexOf(v)
          if (sum > min) continue
          if (sum < min) {
            res.length = 0
            min = sum
          }
          res.push(v)
        }
        return res
      }
      console.log(findRestaurant(['Shogun', 'Tapioca Express', 'Burger King', 'KFC'], ['Piatti', 'The Grill at Torrey Pines', 'Hungry Hunter Steakhouse', 'Shogun']))
    </script>
  </body>
</html>
